|
Use of the polyhedral model within a compiler requires software to represent the objects of this framework (sets of integer-valued points in regions of various spaces) and perform operations upon them (e.g., testing whether the set is empty). For more detail about the objects and operations in this model, and an example relating the model to the programs being compiled, see the polyhedral model page. There are many frameworks supporting the polyhedral model. Some of these frameworks use one or more libraries for performing polyhedral operations. Others, notably Omega, combine everything in a single package. Some commonly used libraries are the Omega Library (and a more recent fork), piplib,〔Paul Feautrier. ''Parametric Integer Programming.'' 1988〕 PolyLib, PPL, isl, the cloog polyhedral code generator,〔Cedric Bastoul. ''Code Generation in the Polyhedral Model Is Easier Than You Think.'' PACT'13 IEEE International Conference on Parallel Architecture and Compilation Techniques (2004)〕 and the barvinok library for counting integer solutions. Of these libraries, PolyLib and PPL focus mostly on rational values, while the other libraries focus on integer values. The polyhedral framework of gcc is called Graphite.〔Sebastian Pop, Albert Cohen, Cedric Bastoul , Sylvain Girbal, Pierre Jouvelot, Georges-Andr Silber et Nicolas Vasilache. ''Graphite: Loop optimizations based on the polyhedral model for GCC.'' 4th GCC Developer's Summit. Ottawa, Canada, June 2006.〕 Polly provides polyhedral optimizations for LLVM, and R-Stream〔Benoit Meister, Nicolas Vasilache, David Wohlford, Muthu Baskaran, Allen Leung and Richard Lethin. ''R-Stream Compiler.'' In Encyclopedia of Parallel Computing, David Padua Ed., pp 1756-1765, Springer, 2011.〕 has had a polyhedral mapper since ca. 2006. ==Common strengths== Polyhedral frameworks are designed to support compilers techniques for analysis and transformation of codes with nested loops, producing exact results for loop nests with affine loop bounds and subscripts ("Static Control Parts" of programs). They can be used to represent and reason about ''executions'' (iterations) of statements, rather than treating a statement as a single object representing properties of all executions of that statement. Polyhedral frameworks typically also allow the use of symbolic expressions. Polyhedral frameworks can be used for dependence analysis for arrays, including both traditional alias analysis and more advanced techniques such as the analysis of data flow in arrays or identification of conditional dependencies. They can also be used to represent code transformation, and provide features to generate the transformed code in a high-level language. The transformation and generation systems can typically handle imperfectly nested loops. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Frameworks supporting the polyhedral model」の詳細全文を読む スポンサード リンク
|